<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    //对象：一个具体的事物，一个复杂的数据类型，包括属性和方法。
    //属性：对象的特征，用变量描述
    //方法：对象的行为（功能），用函数（方法）描述。
    //创建对象：用字面量创建对象,在{}中描述对象
    let obj1 = {};//空对象
    console.log(obj1);
    console.log(typeof obj1);//object对象
    let obj2 = {
        //属性  属性名：值，多个属性之间用逗号（,）隔开
        userName:'admin',
        password:'123',
        //方法
        login:function(){
            console.log('登录成功');
        }

    };
    //访问对象
    //对象.变量名 或 对象['变量名'] 访问对象的属性
    console.log(obj2.userName);
    console.log(obj2['password']);
    //对象.方法名（） 或 对象['方法名']() 调用对象的方法
    obj2.login();
    obj2['login']();
    console.log('---------------');
    //创建对象：用构造函数创建对象
    /*构造函数：一种特殊的函数，通过关键字new调用这个函数能构造出一个对象。
    step1:定义构造函数,一般将构造函数名的首字母大写;
    step2:使用关键字new 构造函数对象

    */
   function Stu(name,sex,id){
        //this关键字：这里
        this.name = name;//把传入的实参name传递给当前对象中的属性name
        this.sex = sex;
        this.id =id;
        this.show = function(){
            console.log('我叫：'+this.name);
        };
   }
   //关键字new
   let student1 = new Stu('梨花','女',123);
   let student2 = new Stu('桃花','女',456);
   let student3 = new Stu('荷花','女',789);
   student1.show();
   student2.show();
   student3.show();
   //创建对象：用Object()创建对象
   let obj3 = new Object(); //构造空对象
   //添加属性和行为
   obj3.name = 'root';
   obj3.psd = '123';
   obj3.login =function(){
    //模板字符：`${对象名}`
    console.log(`${obj3.name}登录成功`);
   };
   //访问对象:
   obj3.login();
   //遍历对象for...in
   //用字面量创建对象,对象中有title,date,author属性和read()方法
   let news = {
    title:'xxx塌房了',
    date:'2024年10月28号',
    author:'狗仔',
    read :function(){
        console.log('阅读新闻'+this.title);
    }
   };
   news.read();
   for(let temp in news){
    console.log(temp);//遍历出对象中属性的名字
    if (typeof news[temp]==='function'){
        news[temp]();
    }else{
        console.log(news[temp]);//获取对象中属性的值
    }
   }
   //Math对象：不用实例化
   let num = Math.floor(-2.12);//向下取整
   console.log(num);
   num = Math.random();//取0~1之间的随机数
   console.log(num);




</script>
</html>